package com.mjf.scala.chapter05

/**
 * 函数的参数
 */
object Scala02_TestFun {

  def main(args: Array[String]): Unit = {

    // （1）可变参数
    def f1(s: String*): Unit = {
      println(s)
    }

    f1()    // List()
    f1("abc", "dbc")  // WrappedArray(abc, dbc)

    // （2）如果参数列表中存在多个参数，那么可变参数应该放置在最后
    // 在一个参数列表中，最多只能有一个可变长参数
    def f2(s1: String, s2: String*): Unit = {
      println(s2)
    }

    // （3）参数默认值，一般将有默认值的参数放置在参数列表的后面
    def f3(name: String = "jack"): Unit = {
      println(name)
    }

    f3()

    // （4）带名参数
    def f4(name: String = "jack", age: Int): Unit = {
      println(name + ":::" + age)
    }

    f4(age = 18)

/*    def f5(age: Int, name: String = "jack"): Unit = {
      println(name + ":::" + age)
    }

    f5(18)*/

  }

}
